package com.fowo.api.model.amazon.financial.event.group;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.format.NumberFormat;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/** 亚马逊结算中心-交易汇总 导入导出辅助模型 */
@Getter
@Setter
public class AmazonFinancialEventGroupExcelPo {

  @Size(max = 50, message = "结算编号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "结算编号")
  private String fid;

  @Size(max = 100, message = "店铺长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "店铺")
  private String sidShopName;

  @ExcelIgnore
  @ExcelProperty(value = "店铺")
  private Long sid;

  @Size(max = 128, message = "店铺名称长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "店铺名称")
  private String storeName;

  @Size(max = 300, message = "国家长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "国家")
  private String countryCodeCountry;

  @ExcelIgnore
  @ExcelProperty(value = "国家")
  private Long countryCode;

  @Size(max = 50, message = "国家code长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "国家code")
  private String customerCountryCode;

  @Size(max = 50, message = "亚马逊账号id长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "亚马逊账号id")
  private String sellerId;

  @Size(max = 50, message = "报告类型长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "报告类型")
  private String reportType;

  @Size(max = 50, message = "结算状态长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "结算状态")
  private String processingStatus;

  @Size(max = 50, message = "转账状态长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "转账状态")
  private String fundTransferStatus;

  @Size(max = 50, message = "对账结果长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "对账结果")
  private String reconciliationResults;

  @Size(max = 1024, message = "对账结果内容长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "对账结果内容")
  private String reconciliationResultsBody;

  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "转账币种")
  private String convertedTotalCurrencyCode;

  @NumberFormat("\"￥ \"0.00")
  @ExcelProperty(value = "转账金额")
  private java.math.BigDecimal convertedTotal;

  @Size(max = 500, message = "备注长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "备注")
  private String comment;

  @DateTimeFormat("yyyy年MM月dd日HH:mm:ss")
  @ExcelProperty(value = "结算开始时间")
  private java.util.Date settlementStartDate;

  @DateTimeFormat("yyyy年MM月dd日HH:mm:ss")
  @ExcelProperty(value = "结算结束时间")
  private java.util.Date settlementEndDate;

  @DateTimeFormat("yyyy年MM月dd日HH:mm:ss")
  @ExcelProperty(value = "转账日期")
  private java.util.Date fundTransferDate;

  @DateTimeFormat("yyyy年MM月dd日HH:mm:ss")
  @ExcelProperty(value = "转账日期-当地")
  private java.util.Date fundTransferDateLocale;

  @Size(max = 50, message = "Settlement ID长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "Settlement ID")
  private String settlementId;

  @Size(max = 50, message = "银行尾号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "银行尾号")
  private String accountTail;

  @Size(max = 50, message = "追踪编号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "追踪编号")
  private String traceId;

  @Size(max = 128, message = "财务组id长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "财务组id")
  private String financialEventGroupId;

  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "到账状态")
  private String fundTransferGetStatus;

  @Size(max = 50, message = "bucket长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "bucket")
  private String bucket;

  @Size(max = 50, message = "s3FileKey长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "s3FileKey")
  private String s3FileKey;

  @Size(max = 50, message = "应收币种符号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "应收币种符号")
  private String originCurrencyIcon;

  @Size(max = 50, message = "转账币种符号长度不能超过20")
  @ContentStyle(
    horizontalAlignment = HorizontalAlignmentEnum.LEFT,
    dataFormat = 49
  )
  @ExcelProperty(value = "转账币种符号")
  private String convertCurrencyIcon;

  @NumberFormat("0.00\"%\"")
  @ExcelProperty(value = "回款率")
  private java.math.BigDecimal collectionRate;

  @Size(max = 1024, message = "收入长度不能超过20")
  @ExcelProperty(value = "收入")
  private java.math.BigDecimal sale;

  @ExcelProperty(value = "产品销售")
  private java.math.BigDecimal saleProduct;

  @ExcelProperty(value = "买家运费")
  private java.math.BigDecimal saleFreight;

  @ExcelProperty(value = "包装")
  private java.math.BigDecimal salePacking;

  @ExcelProperty(value = "其他")
  private java.math.BigDecimal saleOther;

  @ExcelProperty(value = "税")
  private java.math.BigDecimal saleTax;

  @ExcelProperty(value = "应收金额")
  private java.math.BigDecimal transferConvertedTotalCurrencyAmount;

  @ExcelProperty(value = "期初余额")
  private java.math.BigDecimal transferBeginningBalanceCurrencyAmount;

  @ExcelProperty(value = "本期结算")
  private java.math.BigDecimal transferOriginalTotalCurrencyAmount;

  @ExcelProperty(value = "预留退回")
  private java.math.BigDecimal transferPreviousReserveAmount;

  @ExcelProperty(value = "本期预留")
  private java.math.BigDecimal transferCurrentReserveAmount;

  @ExcelProperty(value = "信用卡扣款")
  private java.math.BigDecimal transferCreditCardDeduction;

  @Size(max = 1024, message = "退款长度不能超过20")
  @ExcelProperty(value = "退款")
  private java.math.BigDecimal refund;

  @ExcelProperty(value = "收入退款")
  private java.math.BigDecimal refundSaleRefund;

  @ExcelProperty(value = "费用退款")
  private java.math.BigDecimal refundFeeRefund;

  @ExcelProperty(value = "税退款")
  private java.math.BigDecimal refundTax;

  @Size(max = 1024, message = "支出长度不能超过20")
  @ExcelProperty(value = "支出")
  private java.math.BigDecimal pay;

  @ExcelProperty(value = "仓储费用")
  private java.math.BigDecimal payStorage;

  @ExcelProperty(value = "亚马逊费用")
  private java.math.BigDecimal payAmazon;

  @ExcelProperty(value = "广告费")
  private java.math.BigDecimal payAd;

  @ExcelProperty(value = "促销费")
  private java.math.BigDecimal payPromotion;

  @ExcelProperty(value = "其他")
  private java.math.BigDecimal payOther;
}
